(function() {
  var crypto, secure;

  crypto = require('crypto');

  secure = {};

  module.exports = secure;

  secure.encryptEde = function(clear_text) {
    var cipher, cipher_text, key;
    if (!settings.secure_key) {
      console.error('没有配置安全密钥，不作加密处理...');
      return clear_text;
    }
    if (!clear_text) {
      console.error('加密输入参数为空，请检查...');
      return null;
    }
    if (clear_text.length % 8 !== 0) {
      console.error('待加密数据长度错误，请检查...');
      return null;
    }
    key = Buffer.from(settings.secure_key, 'hex');
    if (key.length !== 16) {
      console.error('安全密钥配置错误，必须由 32 位[0-9A-F]数字组成');
      return null;
    }
    cipher = crypto.createCipheriv('des-ede', key, new Buffer(''));
    cipher.setAutoPadding(false);
    cipher_text = cipher.update(clear_text, 'hex', 'hex');
    cipher_text += cipher.final('hex');
    return cipher_text.toUpperCase();
  };

  secure.decryptEde = function(cipher_text) {
    var cipher, clear_text, key;
    if (!settings.secure_key) {
      console.log('没有配置安全密钥，不作解密处理...');
      return cipher_text;
    }
    if (!cipher_text) {
      console.error('解密输入参数为空，请检查...');
      return null;
    }
    if (cipher_text.length % 8 !== 0) {
      console.error('待解密数据长度错误，请检查...');
      return null;
    }
    key = Buffer.from(settings.secure_key, 'hex');
    if (key.length !== 16) {
      console.error('安全密钥配置错误，必须由 32 位[0-9A-F]数字组成');
      return null;
    }
    cipher = crypto.createDecipheriv('des-ede', key, new Buffer(''));
    cipher.setAutoPadding(false);
    clear_text = cipher.update(cipher_text, 'hex', 'hex');
    clear_text += cipher.final('hex');
    return clear_text.toUpperCase();
  };

}).call(this);
